<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    数组的静态方法
    Array.from() 将类数组转数组
    Array.isArray()  判断是不是数组  是true 不是false
    Array.of() 将任意参数转化为数组，返回数组实例
    
    私有：
    索引下标
    长度(length)

    公有方法：
    fill(value,startIndex,endIndex) 数组填充   value默认undefined
    迭代器方法（循环）---9
    forEach((item,index,arr)=>{})---》只有 forEach 没有return
    map((item,index,arr)=>{})
    filter((item,index,arr)=>{})  筛选，将满足条件的内容筛选出来，返回一个 新数组
    find((item,index,arr)=>{}) 查找，将满足条件的第一个内容查找出来，返回结果 第一个内容
    findIndex((item,index,arr)=>{}) 查找，将满足条件的第一个内容索引下标查找出来，                
                                    返回结果 (有)第一个内容索引下标, 没有就是-1
    every((item,index,arr)=>{}) 必须每一个都满足条件, 满足true  不满足false
    some((item,index,arr)=>{})  只要有一个都满足条件, 就是true  所有都不满足 false

    ****reduce((result,item,index,arr)=>{},初始值)   从左向右计算  初始值可有可无
    reduceRight((result,item,index,arr)=>{},初始)   从右向左计算  初始值可有可无
    一般用于实现累加操作

    result:上一步运算的结果
    如果有初始值，result第一次的结果就是初始值,后面循环的结果，就是return运算的内容
    如果没有初始值，result第一次的结果就是数组的第一项(item就变成数组第二项,索引下标将从1开始),
                  后面循环的结果，就是return运算的内容
                  
    返回值是最终计算后的结果
    
    <script>
          let arr=[{price:10,num:3},{price:20,num:2},{price:20,num:1}];

            let result=arr.reduceRight((result,item)=>{
                return result+(item.price*item.num);
            },0)
            console.log(result);//90



        //   let arr=[1,2,3,4,5];

        // let result=arr.reduceRight((result,item,index)=>{
        //     console.log(result,item,index);
        //     //0,5,4
        //     return  result+item;
        // },0)
        // console.log(result);//15



        // let arr=[1,2,3,4,5];

        // let result=arr.reduceRight((result,item,index)=>{
        //     console.log(result,item,index);
        //     //5,4,3
        //     return  result+item;
        // })
        // console.log(result);//15




        //  let arr=[1,2,3,4,5];

        // let result=arr.reduce((result,item,index)=>{
        //     console.log(result,item,index);
        //     //1,2,1
        //     //3,3,2
        //     //6,4,3
        //     //10,5,4
        //     //15
        //     return  result+item;
        // })
        // console.log(result);//15




        //  let arr=[1,2,3,4,5];

        // let result=arr.reduce((result,item,index)=>{
        //     console.log(result,item,index);
        //     // 100,1,0
        //     // 101,2,1
        //     // 103,3,2
        //     // 106,4,3
        //     // 110,5,4
        //     // 115
        //     return  result+item;//上一步的结果
        // },100)
        // console.log(result);//115




        // let arr=[12,34,2,4,56,7,9];

        // let result=arr.some((item,index,arr)=>{
        //     return item>100;//条件
        // })
        // console.log(result);



        // let resultarr=arr.filter((item,index,arr)=>{
        //     return item>10;//条件
        // })

        // console.log(resultarr);

        // let resultarr=arr.find((item,index,arr)=>{
        //     return item>10;//条件
        // })
        // console.log(resultarr);


        // let resultarr=arr.findIndex((item,index,arr)=>{
        //     return item>10;//条件
        // })
        // console.log(resultarr);



    </script>

    <!-- <script>
        let arr=[6];
        let arr2=new Array(6);

        console.log(arr,arr2);
        console.log(arr2.fill("a",3,6));

        //原来数组不能循环，填充后数组可以循环
        //不写 默认填充 undefined
        arr2.fill().forEach((item)=>{
            console.log("111");
        })
    </script> -->

    <!-- <script>
        let num=100;
        let arr=new Array()
        console.log(arr);
        console.dir(Array);
        console.log(Array.isArray(num))
        console.log(Array.of(1,23,[12,34]));
    </script>  -->
</body>
</html>